/**
 * Created by Administrator on 2016/6/27.
 */


//注册的操作，都挂载到user这个对象上，
//随后，如果有关于注册的操作，是不是我们直接调用这个对象
//链接mongodb
var mongodb = require('./db');
//我在写这个对象的时候，逼着我是不是就要考虑有那些数据
function User(user) {
    //对象，先写这个属性
    this.name = user.name;
    this.password = user.password;
    this.email = user.email;
}

//注册信息的保存
User.prototype.save = function (callback) {
    //1.第一步，收集数据
    //2.打开数据库
    //3.打开数据库当中的users集合
    //4.把数据写入users集合当中去
    var user = {
        name:this.name,
        password:this.password,
        email:this.email
    };
    //打开数据库
    mongodb.open(function (err,db){
        if(err){
            //res.flash('error','数据库链接失败');
            return callback(err);
        }

        //打开数据库当中的users集合
        db.collection('users',function (err,collection) {
            if(err){
                mongodb.close();
                return callback(err);
            }
            collection.insert(user,function (err,data) {
                //无论正确与否，这个数据库都需要关闭，
                mongodb.close();
                if(err){
                    return callback(err);
                }else{
                    callback(null,data[0]);
                }
            })
        })
    })

};
//获取到某一个注册用户信息的
User.get = function (name,callback) {
    //1.第一步，打开数据库
    //2.打开数据库当中的users集合
    //3.看看有没有跟name相同的用户
    //4.返回这个用户的信息，
    mongodb.open(function (err,db) {
        if(err){
            return callback(err);
        }
        //db,collection是用来读取users的集合的
        //collection是users集合当中所有的数据
        db.collection('users',function (err,collection) {
            if(err){
                mongodb.close();
                return callback(err);
            }
            //findOne获取带具体的某一个用户的注册信息，将这个注册信息返回给回调函数，
            collection.findOne({name:name},function (err,user) {
                if(err){
                    return callback(err);
                }
                callback(null,user);
            })
        })
    })
};
//封装成一个模块，方便调用
module.exports = User;